package financeiro.conta;

import java.util.Date;
import java.util.List;

import financeiro.usuario.Usuario;
import financeiro.util.DAOFactory;

public class ContaRN {

	private ContaDAOHibernate contaDAO;

	public ContaRN() {
		contaDAO = (ContaDAOHibernate) DAOFactory.criaContaDAO();
	}

	public List<Conta> listarContas(Usuario usuario) {
		return this.contaDAO.listarContas(usuario);
	}

	public List<Conta> listarTodas() {
		return this.contaDAO.listar();
	}

	public Conta carregarConta(Integer codigo) {
		return this.contaDAO.carregar(codigo);
	}

	public void salvar(Conta conta) {
		conta.setContaDataCadastro(new Date());
		this.contaDAO.salvar(conta);
	}

	public void salvarAtualizar(Conta conta) {
		conta.setContaDataCadastro(new Date());
		this.contaDAO.salvarAtualizar(conta);
	}

	public void excluir(Conta conta) {
		this.contaDAO.excluir(conta);
	}

	public Conta buscarFavorita(Usuario usuario) {
		return this.contaDAO.buscaFavorita(usuario);
	}

	public void tornarFavorita(Conta contaFavorita) {
		Conta conta = this.buscarFavorita(contaFavorita.getContaUsuario());
		if (conta != null) {
			conta.setContaFavorita(false);
			this.contaDAO.salvarAtualizar(conta);
		}
		contaFavorita.setContaFavorita(true);
		this.contaDAO.salvarAtualizar(conta);
	}

}
